﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SystemCore;

namespace EakTest
{
    public class OrderUtility
    {
        public static int GetOrderStatusByRole(int role)
        {
            var status = EOrderStatus.All;
            switch (role)
            {
                case (int)ERole.SC:
                    status = EOrderStatus.Order;
                    break;
                case (int)ERole.Approver:
                    status = EOrderStatus.WaitForApprove;
                    break;
            }

            return (int)status;
        }

        //public static List<int> GetOrderStatusByRole(int role)
        //{
        //    EOrderStatus status;
        //    switch (role)
        //    {
        //        case (int)ERole.SC:
        //            status = EOrderStatus.Order | EOrderStatus.Reject;
        //            break;
        //        case (int)ERole.Approver:
        //            status = EOrderStatus.WaitForApprove | EOrderStatus.Queue | EOrderStatus.Closed;
        //            break;
        //        default:
        //            status = EOrderStatus.Order | EOrderStatus.Reject | EOrderStatus.WaitForApprove | EOrderStatus.Queue | EOrderStatus.Closed;
        //            break;
        //    }

        //    //var c = ConvertToList(status);
        //    List<int> listOfOrderStatus = ConvertToList(status);

        //    //EOrderStatus[] values = (EOrderStatus[])Enum.GetValues(typeof(EOrderStatus));
        //    //Array.ForEach<EOrderStatus>(values, delegate(EOrderStatus v) { status |= v; });
        //    //int bitMask = Convert.ToInt32(status);

        //    //var a = Enum.GetValues(typeof(EOrderStatus)).Cast<int>().Sum();

        //    //var b = status.ToString()
        //    //                  .Split(new[] { ", " }, StringSplitOptions.None)
        //    //                  .Select(v => (EOrderStatus)Enum.Parse(typeof(EOrderStatus), v));

        //    return listOfOrderStatus;
        //}


        //private static List<int> ConvertToList(EOrderStatus status)
        //{
        //    List<int> result = new List<int>();

        //    if (status.HasFlag(EOrderStatus.Order))
        //    {
        //        result.Add((int)EOrderStatus.Order);
        //    }
        //    if (status.HasFlag(EOrderStatus.WaitForApprove))
        //    {
        //        result.Add((int)EOrderStatus.WaitForApprove);
        //    }
        //    if (status.HasFlag(EOrderStatus.Queue))
        //    {
        //        result.Add((int)EOrderStatus.Queue);
        //    }
        //    if (status.HasFlag(EOrderStatus.Reject))
        //    {
        //        result.Add((int)EOrderStatus.Reject);
        //    }
        //    if (status.HasFlag(EOrderStatus.Closed))
        //    {
        //        result.Add((int)EOrderStatus.Closed);
        //    }

        //    return result;
        //}

        //public static EOrderStatus GetOrderStatusByRole(int role)
        //{
        //    var status = EOrderStatus.All;
        //    switch (role)
        //    {
        //        case (int)ERole.SC:
        //            status = EOrderStatus.Order | EOrderStatus.Reject;
        //            break;
        //        case (int)ERole.Approver:
        //            status = EOrderStatus.WaitForApprove | EOrderStatus.Queue | EOrderStatus.Closed;
        //            break;
        //    }

        //    return status;
        //}
    }
}
